﻿using System;
using System.Collections.Generic;
//
using System.IO;
//using System.Windows.Forms;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

// GetTPB, Copyright Mirosław M. Mączka.  All Rights Reserved. This code released under the terms of the Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)
namespace GetTpb
{
    public class ConfigTextFile : System.Collections.IEnumerable
    {
        private string configName = "GetTpb.Txt";
        private List<TpbSource> lts = new List<TpbSource>();
        //
        public bool ReadConfigFile()
        {
            TpbSource ts = new TpbSource();
            lts.Clear();
            try
            {
                foreach (string s in File.ReadAllLines(configName))
                {
                    if (s.Trim().StartsWith("#")) continue;
                    string[] l = s.Split(new[] { '|', '=' }, StringSplitOptions.None);
                    if (5 != l.Length) continue;
                    for (int n = 0; n < l.Length; n++)
                    {
                        l[n] = l[n].Trim();
                    }
                    if (TpbSource.Cnv2TpbSource(l[1], l[0], l[2], l[3], l[4], ref ts))
                    {
                        lts.Add(ts);
                    }
                }
            }
            catch (Exception e)
            {
                //MessageBox.Show(e.Message, "ERROR ReadConfigFile()", MessageBoxButton.OK, MessageBoxImage.Error);
                MessageBox.Show(e.Message, "ERROR ReadConfigFile()", MessageBoxButton.OK, MessageBoxImage.Error);
                return false;
            }
            return true;
        }
        public void ReadOrCreate()
        {
            if (!File.Exists(configName))
            {
                CreateDefaultConfig();
            }
            ReadConfigFile();
        }

        public bool CreateDefaultConfig()
        {
            List<string> l = new List<string>();
            string hlp_pl = "#nazwa, także nazwa tworzonego pliku\n#adres strony www\n#minimalna wielkość ściąganych plików w MB, 0 - wszystkie wielkości\n#największa ilość odczytanych pozycji 0 - wszystkie dostępne\n#wybierać tylko pozycje zawierające podany tekst, puste - wszystkie\n#";
            try
            {
                l.Add(hlp_pl);
                l.Add(new TpbSource("http://thepiratebay.se/browse/104", "FLAC", 0, 200, "").ToString());
                l.Add(new TpbSource("http://thepiratebay.se/browse/204", "Klipy video", 300, 200, "").ToString());
                l.Add(new TpbSource("http://thepiratebay.se/browse/203", "Teledyski", 0100, 200, "").ToString());
                l.Add(new TpbSource("http://thepiratebay.se/browse/202", "Filmy DVD", 0, 200, "").ToString());
                l.Add(new TpbSource("http://thepiratebay.se/browse/207", "Highres Movies", 0, 200, "").ToString());
                l.Add(new TpbSource("http://thepiratebay.se/browse/201", "Filmy", 0, 200, "").ToString());
                l.Add(new TpbSource("http://thepiratebay.se/browse/101", "Muzyka", 0, 600, "").ToString());
                l.Add(new TpbSource("http://thepiratebay.se/search/discography/0/99/100", "Dyskografie", 0, 200, "").ToString());
                //
                File.WriteAllLines(configName, l.ToArray());
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "ERROR CreateDefaultConfig()", MessageBoxButton.OK, MessageBoxImage.Error);
                return false;
            }
            //
            return true;
        }


        public System.Collections.IEnumerator GetEnumerator()
        {
            for (int i = 0; i < lts.Count; i++)
            {
                yield return lts[i];
            }
        }
        


    }//class
}//namespace
